home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModalRadios.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  5.9 KB  |  198 lines  |  [TEXT/CWIE]

  1. /* ModalRadios.c -- Modal dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModalRadios.h"
  20.  
  21. #define kOKButton        1
  22. #define kRadioGroupGroup        2
  23. #define kStandardRadio        3
  24. #define kGroupBox        4
  25. #define kGroupGroup        5
  26. #define kGroupRadio1        6
  27. #define kGroupRadio2        7
  28. #define kGroupRadio3        8
  29. #define kGraphicBox        9
  30. #define kGraphicGroup        10
  31. #define kStopRadio        11
  32. #define kGoRadio        12
  33. #define kBevelBox        13
  34. #define kBevelGroup        14
  35. #define kRadioButtonRadio        15
  36. #define kRadioButton2Radio        16
  37. #define kTextBox        17
  38. #define kTextGroup        18
  39. #define kNameRadio        19
  40. #define kKindRadio        20
  41. #define kSizeRadio        21
  42.  
  43.  
  44. /*----------*/
  45. Boolean        GetModalRadios (
  46.     DModalRadiosData*        ioData)
  47. {
  48.     Boolean            result = false;
  49.     ModalRadios*        dialog = NewModalRadios ();
  50.  
  51.     result = AMDialog_RunModal ((AMDialog*)dialog, DLOG_ModalRadios, (AMSignaler*)ioData);
  52.  
  53.     DeleteModalRadios (dialog);
  54.  
  55.     return result;
  56. }
  57.  
  58. //----------
  59. ModalRadios*        NewModalRadios ()
  60. {
  61.     ModalRadios*        dialog;
  62.  
  63.     dialog = (ModalRadios*)malloc (sizeof (ModalRadios));
  64.     ModalRadios_Init (dialog);
  65.     SetClassID (dialog, classModalRadios);
  66.  
  67.     return dialog;
  68. }
  69.  
  70. //----------
  71. void    DeleteModalRadios (
  72.     ModalRadios*        dialog)
  73. {
  74.     ModalRadios_Free (dialog);
  75.     free (dialog);
  76. }
  77.  
  78. //----------
  79. void    ModalRadios_Init (
  80.     ModalRadios*        self)
  81. {
  82.     AMDialog_Init ((AMDialog*)self);
  83. }
  84.  
  85. //----------
  86. void    ModalRadios_Free (
  87.     ModalRadios*        self)
  88. {
  89.     AMDialog_Free ((AMDialog*)self);
  90. }
  91.  
  92. //----------
  93. void    ModalRadios_FinishMake (
  94.     ModalRadios*        self)
  95. {
  96.     self->mOKHandle = AMDialog_GetControlItem ((AMDialog*)self, kOKButton);
  97.     SetDefaultState (self->mOKHandle, true);
  98.     SetDialogDefaultItem (((AMDialog*)self)->mDialog, kOKButton);
  99.     self->mRadioGroupGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kRadioGroupGroup);
  100.     self->mStandardHandle = AMDialog_GetControlItem ((AMDialog*)self, kStandardRadio);
  101.     self->mGroupBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kGroupBox);
  102.     self->mGroupGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kGroupGroup);
  103.     self->mGroupRadio1Handle = AMDialog_GetControlItem ((AMDialog*)self, kGroupRadio1);
  104.     self->mGroupRadio2Handle = AMDialog_GetControlItem ((AMDialog*)self, kGroupRadio2);
  105.     self->mGroupRadio3Handle = AMDialog_GetControlItem ((AMDialog*)self, kGroupRadio3);
  106.     self->mGraphicBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicBox);
  107.     self->mGraphicGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicGroup);
  108.     self->mStopHandle = AMDialog_GetControlItem ((AMDialog*)self, kStopRadio);
  109.     self->mGoHandle = AMDialog_GetControlItem ((AMDialog*)self, kGoRadio);
  110.     self->mBevelBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelBox);
  111.     self->mBevelGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelGroup);
  112.     self->mRadioButtonHandle = AMDialog_GetControlItem ((AMDialog*)self, kRadioButtonRadio);
  113.     SetBevelButtonGraphicAlignment (self->mRadioButtonHandle, kControlBevelButtonAlignCenter, 0, 0);
  114.     self->mRadioButton2Handle = AMDialog_GetControlItem ((AMDialog*)self, kRadioButton2Radio);
  115.     SetBevelButtonGraphicAlignment (self->mRadioButton2Handle, kControlBevelButtonAlignCenter, 0, 0);
  116.     self->mTextBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kTextBox);
  117.     self->mTextGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kTextGroup);
  118.     self->mNameHandle = AMDialog_GetControlItem ((AMDialog*)self, kNameRadio);
  119.     self->mKindHandle = AMDialog_GetControlItem ((AMDialog*)self, kKindRadio);
  120.     self->mSizeHandle = AMDialog_GetControlItem ((AMDialog*)self, kSizeRadio);
  121. }
  122.  
  123. //----------
  124. void    ModalRadios_ConnectToData (
  125.     ModalRadios*        self,
  126.     AMSignaler*        inData)
  127. {
  128.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  129.     self->mData = (DModalRadiosData*) inData;
  130.  
  131.     SetControlValue (self->mRadioGroupGroupHandle, GetRadioGroup2 (self->mData));
  132.     SetControlValue (self->mGroupGroupHandle, GetGroup2 (self->mData));
  133.     SetControlValue (self->mGraphicGroupHandle, GetGraphic3 (self->mData));
  134.     SetControlValue (self->mBevelGroupHandle, GetBevel2 (self->mData));
  135.     SetBevelButtonGraphicAlignment (self->mRadioButtonHandle, kControlBevelButtonAlignCenter, 0, 0);
  136.     SetBevelButtonGraphicAlignment (self->mRadioButton2Handle, kControlBevelButtonAlignCenter, 0, 0);
  137.     SetControlValue (self->mTextGroupHandle, GetText2 (self->mData));
  138. }
  139.  
  140. //----------
  141. void    ModalRadios_DoItem (
  142.     ModalRadios*        self,
  143.     SInt16        inItemHit)
  144. {
  145.     switch (inItemHit) {
  146.     case kOKButton:
  147.             AMDialog_SetResult ((AMDialog*)self, true);
  148.         break;
  149.     case kRadioGroupGroup:
  150.             SetRadioGroup2 (self->mData, GetControlValue (self->mRadioGroupGroupHandle));
  151.         break;
  152.     case kGroupGroup:
  153.             SetGroup2 (self->mData, GetControlValue (self->mGroupGroupHandle));
  154.         break;
  155.     case kGraphicGroup:
  156.             SetGraphic3 (self->mData, GetControlValue (self->mGraphicGroupHandle));
  157.         break;
  158.     case kBevelGroup:
  159.             SetBevel2 (self->mData, GetControlValue (self->mBevelGroupHandle));
  160.         break;
  161.     case kTextGroup:
  162.             SetText2 (self->mData, GetControlValue (self->mTextGroupHandle));
  163.         break;
  164.  
  165.     } // switch
  166. }
  167.  
  168. //----------
  169. void    ModalRadios_DataChanged (
  170.     ModalRadios*        self,
  171.     long        inDataID)
  172. {
  173.     if (inDataID == idRadioGroup2) {
  174.         SetControlValue (self->mRadioGroupGroupHandle, GetRadioGroup2 (self->mData));
  175.     }
  176.     if (inDataID == idGroup2) {
  177.         SetControlValue (self->mGroupGroupHandle, GetGroup2 (self->mData));
  178.     }
  179.     if (inDataID == idGraphic3) {
  180.         SetControlValue (self->mGraphicGroupHandle, GetGraphic3 (self->mData));
  181.     }
  182.     if (inDataID == idBevel2) {
  183.         SetControlValue (self->mBevelGroupHandle, GetBevel2 (self->mData));
  184.     }
  185.     if (inDataID == idText2) {
  186.         SetControlValue (self->mTextGroupHandle, GetText2 (self->mData));
  187.     }
  188. }
  189.  
  190. //----------
  191. Boolean        ModalRadios_Filter (
  192.     ModalRadios*            self,
  193.     EventRecord            *ioEvent,
  194.     DialogItemIndex        *outItemHit)
  195. {
  196.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  197. }
  198.